// 
// File:   symbol_table.h
// Author: cionescu
//
// Created on April 12, 2007, 3:24 PM
//

#ifndef _symbol_table_H
#define	_symbol_table_H
#include <map>
#include <utility>

using std::map;
using std::pair;

class symbol_table {

  typedef pair<string, prism_ast_token> symbol_type;
  typedef map<string, prism_ast_token> symbol_table_type;
  
  symbol_table_type m_symbol_table;
  
  int
  insert(token* _ref, prism_ast_token const& _data) {
    if !(m_symbol_table.find(_ref.m_string)!=m_symbol_table.end()) {
      m_symbol_table.insert(symbol_type(_ref.m_string, _data));
      return 0;
    }
    
    return 1;
  }
  
  symbol_table_type::const_iterator
  find(token* _ref) {
    return m_symbol_table.find(_ref->m_string);
  }
  
  symbol_table_type::const_iterator
  end() {
    return m_symbol_table.end();
  }
}
#endif	/* _symbol_table_H */

